package com.px.base.domain;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

/**
 * 河流 数据表对象 bs_river
 *
 * @author 品讯科技
 * @date 2024-08
 */
@Data
@NoArgsConstructor
@Accessors(chain = true)
@TableName("bs_river")
// @ApiModel("河流 实体对象")
public class River implements Serializable {

    private static final long serialVersionUID = 1L;

    /** ID */
    @ApiModelProperty("ID")
    @TableId(value = "id")
    private Long id;

    /** 河流名称 */
    @ApiModelProperty("河流名称")
    @NotBlank(message = "河流名称不能为空")
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private String name;

    /** 河流代号 */
    @ApiModelProperty("河流代号")
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private String codeName;

    /** 河流编码 */
    @ApiModelProperty("河流编码")
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private String code;

    /** 别名 */
    @ApiModelProperty("别名")
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private String alias;

    /** 河流枝流干流说明（干流、一级支流、二级支流 以此类推） */
    @ApiModelProperty("河流枝流干流说明（干流、一级支流、二级支流 以此类推）")
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private String branch;

    /** 河流层级 */
    @ApiModelProperty("河流层级")
    @NotNull(message = "河流层级不能为空")
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private Integer level;

    /** 上级河流ID */
    @ApiModelProperty("上级河流ID")
    @NotNull(message = "上级河流ID不能为空")
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private Long parentId;

    /** 河流层级编码 */
    @ApiModelProperty("河流层级编码")
    @NotBlank(message = "河流层级编码不能为空")
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private String parentPath;

    /** 是否在境内（0.否 1.是） */
    @ApiModelProperty("是否在境内（0.否 1.是）")
    @NotNull(message = "是否在境内（0.否 1.是）不能为空")
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private Integer within;

    /** 排序 */
    @ApiModelProperty("排序")
    @NotNull(message = "排序不能为空")
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private Integer orderNum;

    /** 所属流域ID */
    @ApiModelProperty("所属流域ID")
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private Long riverBasinId;

    /** 所属流域名称 */
    @ApiModelProperty("所属流域名称")
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private String riverBasinName;

    /** 所属水系ID */
    @ApiModelProperty("所属水系ID")
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private Long riverSystemId;

    /** 所属水系名称 */
    @ApiModelProperty("所属水系名称")
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private String riverSystemName;

    /** 中心点纬度 */
    @ApiModelProperty("中心点纬度")
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private String latitude;

    /** 中心点经度 */
    @ApiModelProperty("中心点经度")
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private String longitude;

    /** 总河流面积（km2） */
    @ApiModelProperty("总河流面积（km2）")
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private BigDecimal area;

    /** 境内流域面积（km2） */
    @ApiModelProperty("境内流域面积（km2）")
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private BigDecimal areaIn;

    /** 总河长（km） */
    @ApiModelProperty("总河长（km）")
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private BigDecimal length;

    /** 境内河长（km） */
    @ApiModelProperty("境内河长（km）")
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private BigDecimal lengthIn;

    /** 平均比降(‰) */
    @ApiModelProperty("平均比降(‰)")
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private BigDecimal down;

    /** 境内平均比降(‰) */
    @ApiModelProperty("境内平均比降(‰)")
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private BigDecimal downIn;

    /** 总落差(m) */
    @ApiModelProperty("总落差(m)")
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private BigDecimal difference;

    /** 河口多年平均流量(m3/s) */
    @ApiModelProperty("河口多年平均流量(m3/s)")
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private BigDecimal flow;

    /** 水能蕴藏量（万kw） */
    @ApiModelProperty("水能蕴藏量（万kw）")
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private BigDecimal waterReserve;

    /** 简介 */
    @ApiModelProperty("简介")
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private String info;

    /** 创建者 */
    @TableField(fill = FieldFill.INSERT)
    private String createBy;

    /** 创建时间 */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /** 更新者 */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String updateBy;

    /** 更新时间 */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;

    /** 逻辑删除（0.未删除 1.已删除） */
    @TableLogic
    @TableField(fill = FieldFill.INSERT)
    private Integer deleted;

}
